package com.ctshk.rpc.air.service.app;

import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.rpc.air.dto.AirPortListDTO;
import com.ctshk.rpc.air.dto.MainDataAirAirportDTO;
import com.ctshk.rpc.air.dto.ProductFullPriceAndStockDTO;
import com.ctshk.rpc.air.dto.app.*;
import com.ctshk.rpc.air.dto.pc.AirFlightListDTO;
import com.ctshk.rpc.air.dto.pc.HotCityDTO;
import com.ctshk.rpc.air.req.AirPortListReq;
import com.ctshk.rpc.air.req.ProductFullPriceReq;
import com.ctshk.rpc.air.req.app.AirTicketsListReq;
import com.ctshk.rpc.air.req.app.MainDataRowFieldDataReq;

import java.time.LocalDate;
import java.util.List;

/**
 * @BelongsProject: ctshk-cloud
 * @BelongsPackage: com.ctshk.rpc.air.service
 * @Author: hef
 * @CreateTime: 2021-04-19 15:08
 * @Description: 描述
 */
public interface IAirProductAppService {
    /**
     *  查询机票列表
     * @param req
     * @return
     */
    Result<PageResponse<AirProductListDTO>> getTicketList(AirTicketsListReq req);

    /**
     * 获取推荐列表
     * @return
     */
    List<AirRecommendListDTO> getRecommendedTicket();

    /**
     * 获取机票详情
     * @param id
     * @param date
     * @param channelId
     * @return
     */
    AirProductDetailDTO getProductDetail(Long id, LocalDate date, long channelId);

    /**
     * 获取多程机票详情
     * @param id
     * @param date
     * @param channelId
     * @return
     */
    List<AirProductDetailDTO> getMultipassProductDetail(String id, LocalDate date, long channelId);

    /**
     * 获取机票首页数据
     * @return
     */
    HomePageDataDto getHomePageData();

    /**
     * Pc预订列表
     * @param req
     * @return
     */
    List<AirFlightListDTO> getPcTicketList(AirTicketsListReq req);

    void saveEs();

    /**
     * 获取最近一个月的时间+最低价格
     * @param req
     * @return
     */
    List<CalendarLowestPriceDTO> getMonthFloorPrice(AirTicketsListReq req);

    /**
     * 获取航空信息主数据
     * @param req
     * @return
     */
    List<MainDataRowFieldDataDTO> queryFieldLikeName(MainDataRowFieldDataReq req);

    /**
     * 获取机场信息
     * @param req
     * @return
     */
    List<MainDataAirAirportDTO> getAirportList(AirPortListReq req);

    /**
     * 获取产品总价及库存
     * @return
     */
    ProductFullPriceAndStockDTO getProductFullPrice(ProductFullPriceReq req);


    /**
     * 获取热门城市数据
     * @return
     */
    HotCityDTO getHotCity();
}
